package com.ygy.controller;


import com.ygy.entity.Comments;
import com.ygy.entity.VO.CommentVo;
import com.ygy.service.ICommentsService;
import com.ygy.service.LikeService;
import com.ygy.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * <p>
 * 留言评论表 前端控制器
 * </p>
 *
 * @author Ye
 * @since 2024-03-14
 */
@RestController

@RequestMapping("/comments")
public class CommentsController {

    @Autowired
    private ICommentsService commentService;

    @Autowired
    private LikeService likeService;

    // 添加评论
    @PostMapping("/addComment")

    public Result addComment(@RequestBody Comments comment, HttpSession session){

        System.out.println("comment测试有无接收到数据"+comment);
        // 先判断用户是否登录，从session中获取登录信息，这里占时不做；登录的用户才能评论与点赞
        commentService.saveComment(comment);
        return Result.success();
    }

    // 展示留言列表
    @Transactional
    @GetMapping("/commentList/{productId}/{userId}")
    public Result getCommentList(@PathVariable Integer productId,@PathVariable (required = false) String userId ){

        Integer userIntId = null; // 定义一个 Integer 类型的变量来存储转换后的用户 ID
        // 检查 userId 是否是非空且不是字面 "null"
        if (userId != null && !userId.equalsIgnoreCase("null")) {
            try {
                userIntId = Integer.parseInt(userId); // 尝试将 userId 转换为 Integer
            } catch (NumberFormatException e) {
                return Result.error("未知原因失败"); // 如果转换失败，返回错误
            }
        }
        // 打印进入方法的状态
//        if (userIntId == null) {
//            System.out.println("进入用户未登录状态");
//        } else {
//            System.out.println("用户已登录，用户 ID: " + userIntId);
//        }
//        System.out.println(productId+"查询评论");//获取该商品的全部留言数据
        List<CommentVo> commentVos = commentService.getCommentService(productId);

        // 获取点赞数并设置， 设置该登录用户评论点赞图标状态

            System.out.println("进入用户未登录状态");
            List<CommentVo> likecommentVos = likeService.getLikeCount(commentVos,  userIntId);
            //  System.out.println(commentVos+"查询列表");
            return Result.success(likecommentVos);
    }
}
